package com.eduction.service;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import com.eduction.bean.ExpertAndIdentity;
import com.eduction.common.dbutil.page.Page;
import com.eduction.modules.system.entity.Expert;
import com.eduction.modules.system.entity.ExpertGroupMap;
import com.eduction.modules.system.entity.Group;
import com.eduction.modules.system.entity.School;
import com.eduction.modules.system.entity.SchoolGroupMap;

public interface SiteInspectionExpertService {

	/**
	 * 分页查询专家
	 */
	public Page<Expert> queryExpertByPage(Map<String,String> map) throws SQLException;
	
	/**
	 * 保存
	 */
	public void saveExpert(Expert e);
	
	/**
	 * 查询单个专家
	 */
	public Expert queryExpertById(String id) throws SQLException;
	
	/**
	 * 删除专家
	 */
	public void removeExpert(String id);
	
	/**
	 * 添加专家组
	 */
	public void saveGroup(Group group);
	
	/**
	 * 查询单个专家组
	 */
	public Group selectGroupById(String id) throws SQLException;
	
	/**
	 * 分页查询专家组
	 */
	public Page<Group> selectGroupByPage(Map<String,String> map,int type) throws SQLException;
	
	/**
	 * 查询未绑定专家组和已经结束的专家组的专家
	 */
	public List<Expert> selectExpertIsNotGroup(String param) throws SQLException;

	
	/**
	 * 为专家组分配学校,添加映射(现场)
	 */
	public void setGroupToSchool(SchoolGroupMap map) throws SQLException;

	/**
	 * 为专家组分配学校,添加映射（材料）
	 */
	public void setGroupToSchool2(SchoolGroupMap map) throws SQLException;
	
	/**
	 * 查询某个专家组内的专家
	 */
	public List<ExpertAndIdentity> selectExpertByGroup(String groupId) throws SQLException;
	
	/**
	 * 查询某个专家组下的学校
	 */
	public List<School> querySchoolByGroup(String groupId) throws SQLException;
	
	/**
	 * 修改组内职务
	 */
	public void updateIdentityInGroup(String groupId,String expertId,String identity) throws SQLException;
	
	/**
	 * 添加专家与组关系（现场）
	 */
	public void saveExpertGroupMap(ExpertGroupMap e) throws SQLException;

	/**
	 * 添加专家与组关系(材料)
	 */
	public void saveExpertGroupMap2(ExpertGroupMap e) throws SQLException;
	
	/**
	 * 踢除专家组成员(现场)
	 */
	public void deleteExpertInGroup(String expertId,String groupId) throws SQLException;

	/**
	 * 踢除专家组成员（材料）
	 */
	public void deleteExpertInGroup2(String expertId,String groupId) throws SQLException;
	
	/**
	 * 删除组与学校的关系（现场）
	 */
	public void deleteSchoolInGroup(String schoolId,String groupId) throws SQLException;

	/**
	 * 删除组与学校的关系(材料)
	 */
	public void deleteSchoolInGroup2(String schoolId,String groupId) throws SQLException;

	/**
	 * 删除专家组
	 * @param groupId
	 */
    void deleteGroup(String groupId,String groupType) throws SQLException;
}
